package cn.xxliang.platapp.pojo.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import javax.validation.constraints.NotNull;
import java.util.Date;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;

@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel("切片平台产品信息Dto")
public class PlatProductInfoDto {
    @ApiModelProperty(value = "产品ID")
    @Size(min = 1, max = 30, message = "产品ID限制1-30字符，超出不展示")
    private String productId;
    @ApiModelProperty(value = "包ID")
    @Size(min = 1, max = 30, message = "包ID限制1-30字符，超出不展示")
    private String packageId;
    @ApiModelProperty(value = "元素ID")
    @Size(min = 1, max = 30, message = "元素ID限制1-30字符，超出不展示")
    private String elementId;
    @ApiModelProperty(value = "sp产品id")
    @Size(min = 1, max = 30, message = "SP产品ID限制1-30字符，超出不展示")
    private String spProductId;
    @ApiModelProperty(value = "spid")
    @Size(min = 1, max = 30, message = "SPID限制1-30字符，超出不展示")
    private String spId;
    @ApiModelProperty(value = "qos订购模块分配")
    @Size(min = 1, max = 30, message = "COUPON ID限制1-30字符，超出不展示")
    private String qosProductId;
    @ApiModelProperty(value = "产品名称",required = true)
    @NotNull(message = "产品名称不能为空，字段限制30字符，超出不展示")
    @Size(max = 30)
    private String productName;
    @ApiModelProperty(value = "产品模式 2C B2C",required = true)
    @NotNull(message = "产品模式不能为空")
    private String productMode;
    @ApiModelProperty(value = "业务归类 0-加速 1-限速", required = true)
    @NotNull(message = "业务归类不能为空")
    @Size(min = 1, max = 1, message = "业务归类必须是0或1")
    @Pattern(regexp = "[01]", message = "业务归类必须是0或1")
    private Integer businessClassify;
    @ApiModelProperty(value = "业务归属 0-智家守护 1-网速宝", required = true)
    @NotNull(message = "业务归属不能为空")
    @Size(min = 1, max = 1, message = "业务归属必须是0或1")
    @Pattern(regexp = "[01]", message = "业务归属必须是0或1")
    private Integer businessOwner;
    @ApiModelProperty(value = "产品归属", required = true)
    @NotNull(message = "产品归属不能为空")
    private Integer productOwnerDictId;
    @ApiModelProperty(value = "业务方", required = true)
    @NotNull(message = "业务方不能为空")
    @Size(max = 20, message = "业务方字段限制20字符，超出不展示")
    private String businessParty;
    @ApiModelProperty(value = "覆盖区域", required = true)
    @NotNull(message = "覆盖区域不能为空")
    @Pattern(regexp = "^(全国|31省)$", message = "覆盖区域必须是：全国、31省")
    private String areaInfo;
    @ApiModelProperty(value = "产品科目", required = true)
    @NotNull(message = "产品科目不能为空")
    @Size(max = 50, message = "产品科目字段限制50字符，超出不展示")
    private String productSubject;
    @ApiModelProperty("产品资费")
    @Size(max = 50, message = "产品资费字段限制50字符，超出不展示")
    private String productTariff;
    @ApiModelProperty("归属集团部门")
    @Size(max = 50, message = "归属集团部门字段限制50字符，超出不展示")
    private String departmentGroup;
    @ApiModelProperty(value = "产品类型 0-主产品 1-附加产品 2-增值产品 3-权益产品 4-体验产品 5-测试产品", required = true)
    @NotNull(message = "产品类型不能为空")
    @Pattern(regexp = "[0-5]", message = "产品类型必须是：主产品、附加产品、增值产品、权益产品、体验产品、测试产品")
    private Integer productType;
    @ApiModelProperty("若选择2C-智家守护-联通云守护，增加优先级配置，放在“产品归属”后； 产品优先级 1-9 数字越小 优先级越高")
    private Integer productLevel;
    @ApiModelProperty(value = "产品状态 0-待上架 1-已上架 2-下架", required = true)
    @NotNull(message = "产品状态不能为空")
    private Integer productStatus;
    @ApiModelProperty("产品描述")
    @Size(max = 255, message = "产品描述限制0-255字符")
    private String productDesc;
    @ApiModelProperty(value = "包名称", notes = "PACKAGE NAME")
    @Size(min = 1, max = 30, message = "包名称限制1-30字符，超出不展示")
    private String packageName;
    @ApiModelProperty("包描述 默认为空")
    private String packageDesc;
    @ApiModelProperty(value = "资费名称", notes = "ELEMENT NAME")
    @Size(min = 1, max = 30, message = "资费名称限制1-30字符，超出不展示")
    private String elementName;
    @ApiModelProperty(value = "元素类型 0-资费 1-增值 2-权益 3-体验 4-测试 需要和cbss确认", required = true)
    @NotNull(message = "元素类型不能为空")
    @Size(min = 1, max = 1, message = "元素类型必须是0或1或2或3或4")
    @Pattern(regexp = "[01234]", message = "元素类型必须是0或1或2或3或4")
    private Integer elementType;
    @ApiModelProperty(value = "产品上游系统ID", required = true)
    @NotNull(message = "产品上游系统ID不能为空")
    private Integer northSystemId;
    @ApiModelProperty(value = "删除标识 0-正常 1-删除", required = true)
    @NotNull(message = "删除标识不能为空")
    @Size(min = 1, max = 1, message = "删除标识必须是0或1")
    @Pattern(regexp = "[01]", message = "删除标识必须是0或1")
    private Integer deleteFlag;
    @ApiModelProperty("创建时间")
    private Date createTime;
    @ApiModelProperty("更新时间")
    private Date updateTime;
    @ApiModelProperty("主键，新增后系统自动生成11位ID，对应产品PlatformID")
    private String platformProductId;
}


